Cloud computing provides processing, capacity, and storage on demand. Typical cloud computing service allow a user to access and requisition a virtually unlimited amount of computing resources on demand from a pool of shared computing resources. Often, these resources may consist of virtualized instances of actual computer hardware systems (e.g., servers).
Cloud computing providers may include many different types of cloud services. An area of increasing popularity in cloud computing is cloud gaming. Cloud gaming, also called gaming on-demand, is a type of online gaming that allows direct and on-demand streaming of games onto a computer or other electronic device, typically through a network, such as the Internet. Conventionally, a video game provided by a cloud gaming operator stores the software of the video game on one or more servers. When a user accesses the servers—typically through a network connection—the software is executed and the resultant graphical output is streamed to the user's computer or display device.
Generally, the actual rendering and processing of the images constituting the graphical content displayed to the user is also performed in the servers, before being encoded (compressed) and then transmitted (streamed) to the user's device, where the encoded video stream is subsequently decoded and displayed. User control input—typically responsive to the progression of images displayed—may be received from the user and directly transmitted back to the server, whereupon the input is recorded, and a new set of images may be processed, rendered, encoded, and then streamed back to the user or “client” device. This process may be performed continuously for each user, and often for substantially the entirety of the time the video game is being played by the user.
Cloud gaming allows users to access games without the need for a dedicated gaming console or gaming system, and largely eliminates higher hardware requirements for the computer systems of users, by abstracting the majority of the memory and processing needs from the user's device and on to the server. Moreover, the time required to download and install the video game on the user's local device is eliminated, since the software is already pre-loaded on the servers of the game's operator.
Unfortunately, a new host of challenges are also introduced by cloud gaming over traditional, localized gaming solutions. For example, additional steps are required to prepare the graphical output for display, such as compressing the video continuously in real time, decompressing the video at the user's client device, and continuously streaming data through a network connection. The challenge to perform these steps quickly and efficiently enough to not noticeably impact the user's experience while accommodating limitations due to the network infrastructure is considerable.
One quantifiable measure of this efficiency is the latency experienced by the user. Latency is a measure of the responsiveness of the user's input to the server and back, and can be influenced by a host of variables, including how fast the server is running, the efficiency of the software and hardware running on the server, the network infrastructure, and the distance that the network has to travel to the user's device on the client side. The further that the user's device is from the server for example, either in distance or network hops or network quality, the more latency that could be introduced due to lengthier transmission or routing times. Long latencies, often referred to as “lag” by video game players, are undesirable, particularly during competitive games and/or time-sensitive interactions in games, and can have a significant negative effect on user experience.
Unfortunately, many traditional cloud gaming systems do not account for network attributed latency at all, considering them to be unavoidable or inevitable. At best, cloud gaming operators may attempt to manage latencies by provisioning additional resources at the server side to expedite processing. However, this can increase capital expenditure costs for the game's operators, potentially prohibitively, and is neither an efficient nor effective solution. Still other cloud gaming operators may attempt to avoid latencies altogether by limiting the applications offered, either by limiting the complexity of the images being rendered and the size and/or frequency of the data transmissions or providing only games with asynchronous and/or mechanisms unrelated to timing. Unfortunately, this also restricts user choice to those video games, and may prevent users from accessing a fuller library of software entertainment.